package com.techsen.tsweb.sys.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.techsen.tsweb.core.service.impl.BaseService;
import com.techsen.tsweb.core.util.ValidUtil;
import com.techsen.tsweb.sys.dao.OrgDao;
import com.techsen.tsweb.sys.dao.PersonDao;
import com.techsen.tsweb.sys.domain.Org;
import com.techsen.tsweb.sys.domain.Person;
import com.techsen.tsweb.sys.service.PersonService;

@Service
public class PersonServiceImpl extends BaseService<Person, PersonDao> implements PersonService {

    @Resource
    private OrgDao orgDao;
    
    @Resource @Override
    public void setDao(PersonDao dao) {
        this.dao = dao;
    }
    
    /**
     * 添加人员<br/>
     * 添加人员的同时，添加一个组织对象
     */
    @Override
    public Person add(Person person) {
        Org org = person.clone().setId(person.getOrgId());
        this.orgDao.add(org);
        
        return super.add(person.setOrgId(org.getId()));
    }
    
    /**
     * 删除人员<br/>
     * 删除人员的同时，删除一个组织对象
     */
    @Override
    public void delete(String id) {
        Person person = this.dao.get(id);
        if (person != null) {
            if (person.getOrgId() != null) {
                this.orgDao.delete(person.getOrgId());
            }
            super.delete(id);
        }
    }
    
    /**
     * 修改人员<br/>
     * 修改人员的同时，修改对应的组织对象
     */
    @Override
    public void update(Person person) {
        if (person != null) {
            if (ValidUtil.isValid(person.getOrgId())) {
                Org org = person.clone().setId(person.getOrgId());
                this.orgDao.update(org);
            }
            super.update(person);
        }
    }
    
    /**
     * 根据人员名查询人员集合
     */
    @Override
    public List<Person> getPersonsLikeName(String personName) {
        return this.dao.getPersonsLikeName(personName);
    }
    
}
